This invention relates generally to the installation and operation of software on computer systems and more particularly to the installation of or upgrades to a group of related programs, such as those in a software suite.
A typical software product may be organized into a group or xe2x80x9csuitexe2x80x9d of individual component programs, or xe2x80x9ccomponents.xe2x80x9d For example, STRUCTURED QUERY LANGUAGE (SQL) SERVER is a software product developed by the MICROSOFT corporation that includes several components, such as the core SQL binaries (including the SQL dynamically linked library (DLL)), the INTERNET EXPLORER program and the MICROSOFT DATA ACCESS COMPONENTS (MDAC) program. The SQL SERVER software product may therefore be considered a suite. Typically, a suite includes several distinct software products, each having its own components and possibly sharing one or more components with other products in the suite. A suite also advantageously allows coordinated marketing and packaging of related software products with concomitant improvement in reliability and inter-operation of the components. An example of such a suite is BACKOFFICE SERVER by MICROSOFT, which groups several MICROSOFT products, including SQL SERVER, EXCHANGE SERVER, HOST INTEGRATION SERVER (HIS), FAX SERVER, SYSTEMS MANAGEMENT SERVER (SMS), MS SEARCH, and MDAC into a single software suite. A partial list of the components in the BACKOFFICE suite includes SQL SERVER, EXCHANGE SERVER, INTERNET EXPLORER, MS SEARCH, and MDAC.
Many components of a software suite may not be required for installation of the suite as a whole, but may, instead, be included as enhancements or options. The developer of the suite, however, may wish to require that some of the components be installed when the software suite is being used for certain scenarios. For example, if the software suite is installed on a computer system that is a part of a multi-location network, the suite developer may wish to require that more networking components be installed than in a stand-alone scenario. Of course, some components may be required regardless of the scenario in which the suite is being used.
A developer of a software suite may also wish to insure that when a user installs a software suite on a computer system, the system is first brought to a predetermined state in terms of which programs are initially installed. This simplifies the suite installation process by eliminating the need to account for all of the different versions of components that may already be installed on the system. For example, the suite developer may wish to require that every computer system on which the suite will be used is running the latest version of a particular operating system before allowing the full suite to be installed. Although this approach saves the developer the trouble of having to write a different setup procedure for each version of the operating system, it requires that the user does not find the upgrading or installation process uneconomical and/or difficult.
Alternatively, setup may be implemented with the aid of unattended data files. A single installation script may be used to install the program, and, for each individual computing environment the script can be edited to account for the peculiar requirements of that context. The disadvantage of this method is that it requires an administrator to spend a considerable amount of time editing each individual script to tailor it to particular configurations.
It is desirable to have a setup procedure that is flexible enough to automatically configure the setup strategy to take into account different preexisting configurations in the course of generating a valid installation order. Such a procedure is likely to be useful in contexts other than merely installing suites. It may be used to address security concerns, protect intellectual property rights, provide another tool for applications such as computer games to provide context dependent functionality dynamically and, of course, make installation of applications user friendly.
In accordance with the foregoing, the invention provides a method and system for installing a software suite with multiple components on a computer system such that the determination of components to be installed or removed is made fully or partially transparent to the user. Installing suites typically requires shuffling various CDs or other media, and on occasion, in case of sophisticated software, the aid of an administrator/technician to properly install the required components in an acceptable order. This exercise can easily become tedious.
The use of wizards aids installation provided the starting state of the system is well known and no conflict results due to improper installation strategies. Furthermore, in systems with limited resources it is desirable to remove software not needed in order to free up resources and this exercise cannot be efficiently managed on the fly. Such installation/removal related problems are among those handled by teachings in accordance with this invention. In accordance with the invention, a few or all of the components in a suite of interest are modified to include information pertinent to their installation.
The installation process taught by the invention further facilitates generation of a good installation order. A good installation order results in related components and sub-components being installed together. Given an installation order, the invention also allows a determination to be made if the installation order is valid. Furthermore, determination of an installation order in accordance with the invention allows many different user configurations to be detected and modified as required without requiring expensive oversight or trouble-shooting to install a suite of interest, including via automated installations.
Briefly, the invention requires that a suite, and preferably each component of the suite, includes specification of its installation-affecting relationships along with an acceptable installer, in particular if the installer is different from a default installer. Some examples of installation-affecting relationships include dependency or mutual-exclusion. In a dependency relationship a first component depends on a second component if the second component has to be present prior to the installation of the first component. In contrast, a mutual-exclusion relationship between two components requires that only one of them can be present in a computing environment, or a sub-part of a computing environment, thus requiring the removal of one, if present, to install the other.
This information is collected for all of the components to be installed in a suite and evaluated in the context of the components already present in the computing environment. The installation-affecting relationships are used to generate an installation-affecting-relationship tree in which paths representing potential installation orders are identified with a preference for paths requiring the least number of scope transitions, i.e., changes in installers. A preferred implementation has the parent of a node in the tree also correspond to an acceptable installer for a child node.
An advantageous method for discovering a good installation order organizes the installation-affecting relationships in a matrix format. The matrix itself is constructed from developer supplied information about a component""s installation-affecting relationships. Corresponding to this matrix, indexed by components already present in the system, i.e. defining a configuration, and components to be installed, a tree is constructed to reflect the installation-affecting relationships between the various components. Traversing the tree in a depth first manner with suitable choice of defaults generates a good installation order.